{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据表示与特征工程 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#导入相关模块\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import scipy as sc\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import mglearn\n",
    "%matplotlib inline\n",
    "\n",
    "#忽略弹出的warnings\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')  \n",
    "pd.set_option('display.float_format', lambda x: '%.5f' % x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 分类变量处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### One-Hot编码(虚拟变量)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#get_dummies方法\n",
    "data_dummies = pd.get_dummies(data[drop_col]) #无序分类变量重编码\n",
    "data.drop(drop_col,axis=1,inplace=True) #删除原始分类变量\n",
    "data = pd.concat([data,data_dummies],axis=1) #表链接"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 分箱 离散化 线性模型与树"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x11b7490f0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<Figure size 864x504 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12,7))\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "\n",
    "X, y = mglearn.datasets.make_wave(n_samples=100)\n",
    "line = np.linspace(-3, 3, 1000, endpoint=False).reshape(-1, 1)\n",
    "reg = DecisionTreeRegressor(min_samples_split=3).fit(X, y)\n",
    "plt.plot(line, reg.predict(line), label=\"decision tree\")\n",
    "\n",
    "reg = LinearRegression().fit(X, y)\n",
    "\n",
    "plt.plot(line, reg.predict(line), label=\"linear regression\",color=\"r\",lw=3)\n",
    "\n",
    "plt.plot(X[:, 0], y, 'o', c='k')\n",
    "plt.ylabel(\"Regression output\")\n",
    "plt.xlabel(\"Input feature\")\n",
    "plt.legend(loc=\"best\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 交互特征与多项式特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x11bc46a58>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nX+OxMN8TT3VtWrRYRETGGgUuGbK0aBtp0bZT3m+gwvykW2x0bGgftHYskJvGioiIjJQCl3hd/Ook\n4iZEsu9n5cO+aGAkXexFREQCnQKX+ETa9WlYV0YP+/sCuWmsiIjISGlpHwkoWrRYRETGIgWuINOy\nppGy5UUUZmylbHkRLWsa/T0kr7Ld7rk5bCA0jRURERkpTSkGkfFQUD5YF3sREZFgpcAVRMZLQXkg\nN40VEREZCU0pBhEVlIuIiAQnBa4gcjoF5d6u/RrrtWQiIiLepMAVREZaUH6k9qunuAscH9d+jTQk\neXt/IiIiY50CVxCJX51E9v25RBREQShEFESRfX/uKeudBqv9Gglv709ERGSsU9F8kBlJQbm3a79U\nSyYiIjI8OsM1Dni7maiak4qIiAyPAtc44O1mompOKiIiMjyaUhwHvN1MVM1JRUREhkeBa5zwdjNR\nNScVEREZOk0pioiIiPiYApeIiIiIjylwiYiIiPiYApeIiIiIjylwiYiIiPiYApeIiIiIjylwiYiI\niPiYApeIiIiIjylwiYiIiPiYApeIiIiIjylwiYiIiPiYApeIiIiIjylwiYiIiPiYApeIiIiIjylw\niYiIiPiYApcElJY1jZQtL6IwYytly4toWdPo7yGJiIictlB/D0DkiJY1jVR+af/R2z3FXUdvx69O\n8tewRERETtuoBi7DMOKBR4EJQDjwLdM0N47mGCRw1f2+xvP2u2sUuEREJKiN9pTit4A3TdNcDnwe\n+NMoP74EsJ6SrmFtFxERCRajPaX4O6DnmMfuHuXHlwAWkR9FT/HJ4SoiP8oPoxEREfEei8vl8smO\nDcP4AvDNEzbfbJrmh4ZhpAMvA7ebpvnuYPux2x2u0NAQn4xRAkvtk7UU31B80vYZT8wg7fo0P4xI\nRERk2CweN/oqcA3EMIzZwJPAHaZpvnyq+9fVtfl8gDZbHHV1bb5+mHFlpMe0ZU0jdXfX0FPSRUR+\nFLbb0lW/hZ6jvqBj6n06pt6l4+l9o3FMbbY4j4FrtIvmC4B/AdeZprljNB9bgkP86iQFLBERGXNG\nu4brLiASuNswDIAW0zRXjfIYREREREbVqAYuhSsREREZj9RpXkRERMTHFLhEREREfEyBS0RERMTH\nFLhEREREfEyBS0RERMTHFLhEREREfEyBS0RERMTHFLhEREREfEyBSwbUsqaRsuVFFGZspWx5ES1r\nGv09JBERkaA02kv7SJBoWdNI5Zf2H73dU9x19LbWOhQRERkeneESj+p+X+N5+92et4uIiMjAFLjE\no56SrmFtFxERkYEpcIlHEflRw9ouIiIiA1PgEo9st6d73n6b5+0iIiIyMBXNi0dHCuPr7q6hp6SL\niPwobLelq2BeRERkBBS4ZEDxq5MUsERERLxAU4oiIiIiPqbAJSIiIuJjClwiIiIiPqbAJSIiIuJj\nClwiIiIiPqbAJSIiIuJjClwiIiIiPqbAJSIiIuJjClwiIiIiPqbAJSIiIuJjFpfL5e8xiIiIiIxp\nOsMlIiIi4mMKXCIiIiI+psAlIiIi4mMKXCIiIiI+psAlIiIi4mMKXCIiIiI+FurvAQQCwzBigMeB\nJKADuNE0zTr/jiq4GYYRDzwKTADCgW+ZprnRv6MKfoZhrAauNU3z0/4eS7AyDMMK3AvMBXqAW0zT\nLPPvqIKfYRhnAr8wTfM8f48l2BmGEQY8CEwGIoCfm6b5nF8HFeQMwwgB/gIYgAO42TTNvaM5Bp3h\ncvsisNU0zXOBJ4Ef+nk8Y8G3gDdN01wOfB74k3+HE/wMw7gbuAv93Z6uq4BI0zTPBr4H/MbP4wl6\nhmF8B/grEOnvsYwRnwUa+t+TLgX+6OfxjAVXAJimeQ7wY+C3oz0AvXADpmn+Hvif/ps5QK0fhzNW\n/A64v//foUC3H8cyVmwAvuLvQYwBS4FXAEzT3AQs8u9wxoS9wNX+HsQY8i/gR8fctvtrIGOFaZpr\ngf/svzkJP7zPj7spRcMwvgB884TNN5um+aFhGG8Bs4ELR39kwesUxzQd99Ti7aM/suA0yPH8p2EY\n5/lhSGPNBKDlmNsOwzBCTdPUm9oImab5jGEYk/09jrHCNM12AMMw4oCn0ayLV5imaTcM4x/AauCT\no/344y5wmab5N+BvA3ztfMMwpgMvAlNHdWBBbKBjahjGbNxTtHeYpvnuqA8sSA32HBWvaAXijrlt\nVdiSQGMYxkRgDXCvaZqP+3s8Y4VpmjcZhvFd4APDMApM0+wYrcfWlCJgGMadhmHc2H+zA3dBnZwG\nwzAKcJ8W/7Rpmi/7ezwix3gfuAzAMIyzgF3+HY7I8QzDSANeA75rmuaD/h7PWGAYxo2GYdzZf7MT\ncDLK7/Xj7gzXAB4E/tE/lRMC3Ozn8YwFd+EuoL3bMAyAFtM0V/l3SCKA+6zBhYZhbAAs6O9dAs/3\ngUTgR4ZhHKnlutQ0zS4/jinYPQs8ZBjGe0AYcLtpmqNaW2xxuVyj+XgiIiIi446mFEVERER8TIFL\nRERExMcUuERERER8TIFLRERExMcUuERERER8TIFLRPzKMAyvXyptGMZPDMM418P2BYZhVPRfGj7c\nfeYahqGGtCIyIgpcIjIWLcfdU+9ElwOPmqa5bAT7nIRWoBCREVIfLhHxK8MwXKZpWvrXifw+7i7Q\nM3B3gP80kAk8B+wBZgIHgM+aptl45Hv79/N54DzgLeBeoAZYbZrmrv6vX4a7yTH9X7+//7+JuLtO\n32ma5huGYWThXlopof+x/26a5o8Nw9gJTAH+gXsVhf82TfO8/n3/HXin/79XgHqgC7gE+FX/uEL6\n9/U7Lx06EQkiOsMlIoFkCXAr7sCVA1zcv3027jXlZgLFwH8PtAPTNB8GtgC3HAlb/dtfAu4D7jNN\n86fA3cCDpmkuBK4E7u9fLPgG4AnTNM/qf9zbDcNIAb4BbDFN82un+BkM3IHwQuCL/Y+9AFgMrPI0\n1SkiY58Cl4gEkt2maVaapunEHayS+reXmKb5Tv+//wGc74XHugD4qWEY24GXcS/3MdU0zV8DFYZh\n3IE7lIUDMcPY72HTNMuPeYwr+x/jAyAbd4gTkXFGaymKSCA5dm0zF+61DgHsx2y3HnvbMAyLaZou\n3IFpOEKA803TbOzfTwZw2DCM3+CeOnwcWIs7NFlO+F7XCduOfexj17sLAb5jmuaz/Y+RArQPc5wi\nMgboDJeIBAPDMIx5/f++GfcZKXDXSs00DMOCe1rwCDun/kD5FvDV/p0XALuBaOBC4Femaf4L9/Rg\nFu7gdOw+64EphmFEGoaRBAw0TfgW8EXDMMIMw4gF1gNnDeHnFZExRoFLRIJBI/ATwzAKgVTg5/3b\nvwe8AGwEzGPu/wpwn2EYSwbZ59eBs/qL4f+Ju+6qDbgLeMQwjN2468m2ALm4pzgTDMN4xDTNQuBF\noBB3Af26AR7jPqAU2Na/n4eOmRoVkXFEVymKSEAzDGMy8I5pmpP9PBQRkRHTGS4RERERH9MZLhER\nEREf0xkuERERER9T4BIRERHxMQUuERERER9T4BIRERHxMQUuERERER9T4BIRERHxsf8PtpcFH3Gv\n46AAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.svm import SVR\n",
    "plt.figure(figsize=(10,6))\n",
    "for gamma in [1, 10]:\n",
    "    svr = SVR(gamma=gamma).fit(X, y)\n",
    "    plt.plot(line, svr.predict(line),lw=2, label='SVR gamma={}'.format(gamma))\n",
    "\n",
    "plt.plot(X[:, 0], y, 'o', c='m')\n",
    "plt.ylabel(\"Regression output\")\n",
    "plt.xlabel(\"Input feature\")\n",
    "plt.legend(loc=\"best\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 自动化特征选择\n",
    "##### 变量选择的方法: 单变量统计, 基于模型的选择, 迭代选择"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 单体变量统计---方差分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ True  True  True  True  True  True  True  True  True False  True False\n",
      "  True  True  True  True  True  True False False  True  True  True  True\n",
      "  True  True  True  True  True  True False False False  True False  True\n",
      " False False  True False False False False  True False False  True False\n",
      " False  True False  True False False False False False False  True False\n",
      "  True False False False False  True False  True False False False False\n",
      "  True  True False  True False False False False]\n",
      "原始数据 (284, 80)\n",
      "经过方差分析后的数据 (284, 40)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 720x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x144 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "from sklearn.feature_selection import SelectPercentile\n",
    "from sklearn.model_selection import train_test_split\n",
    "cancer = load_breast_cancer()\n",
    "\n",
    "#获得确定性的随机数\n",
    "rng = np.random.RandomState(42)\n",
    "noise = rng.normal(size=(len(cancer.data),50))#50个随机字段数据\n",
    "\n",
    "#向数据中添加噪声特征\n",
    "#前30个特征来自数据集,后50个是噪声\n",
    "X_w_noise = np.hstack([cancer.data,noise])\n",
    "x_train,x_test,y_train,y_test = train_test_split(X_w_noise,cancer.target,random_state=0,test_size=0.5)\n",
    "\n",
    "#使用f_classif默认值和SelectPercentitle来选择30%的特征\n",
    "select = SelectPercentile(percentile=50) \n",
    "select.fit(x_train,y_train)\n",
    "\n",
    "#获取选择后的特征集\n",
    "x_train_selected = select.transform(x_train)\n",
    "\n",
    "\n",
    "#可视化结果\n",
    "plt.figure(figsize=(10,4))\n",
    "mask = select.get_support()\n",
    "print(mask) #白色为False,黑色为True\n",
    "plt.matshow(mask.reshape(1,-1),cmap=\"gray_r\")\n",
    "plt.xlabel(\"sample index\")\n",
    "print(\"原始数据\",x_train.shape)\n",
    "print(\"经过方差分析后的数据\",x_train_selected.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 基于模型的特征选择"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始数据 (284, 80)\n",
      "经过方差分析后的数据 (284, 40)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 720x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nJEmt+T//nxmRBWBx5AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1152x144 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.feature_selection import SelectFromModel #特征选择模型\n",
    "from sklearn.ensemble import RandomForestClassifier #随机森林\n",
    "select = SelectFromModel(\n",
    "    RandomForestClassifier(n_estimators=100,random_state=42),\n",
    "                         threshold=\"median\") #使用中位数作为阈值, 表示留下一半的特征\n",
    "\n",
    "#训练分类器并筛选并输出数据集\n",
    "select.fit(x_train,y_train)\n",
    "x_train_l1 = select.transform(x_train)\n",
    "\n",
    "#可视化结果\n",
    "plt.figure(figsize=(10,4))\n",
    "mask = select.get_support()\n",
    "plt.matshow(mask.reshape(1,-1),cmap=\"gray_r\")\n",
    "plt.xlabel(\"sample index\")\n",
    "print(\"原始数据\",x_train.shape)\n",
    "print(\"经过方差分析后的数据\",x_train_l1.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 迭代特征选择---递归特征消除法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始数据 (284, 80)\n",
      "经过方差分析后的数据 (284, 40)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 720x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x144 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.feature_selection import RFE #特征选择模型\n",
    "from sklearn.ensemble import RandomForestClassifier #随机森林\n",
    "select = RFE(\n",
    "    RandomForestClassifier(n_estimators=100,random_state=42),\n",
    "                         n_features_to_select=40) #留下一半的特征\n",
    "\n",
    "#训练分类器并筛选并输出数据集\n",
    "select.fit(x_train,y_train)\n",
    "x_train_l2 = select.transform(x_train)\n",
    "\n",
    "#可视化结果\n",
    "plt.figure(figsize=(10,4))\n",
    "mask = select.get_support()\n",
    "plt.matshow(mask.reshape(1,-1),cmap=\"gray_r\")\n",
    "plt.xlabel(\"sample index\")\n",
    "print(\"原始数据\",x_train.shape)\n",
    "print(\"经过方差分析后的数据\",x_train_l2.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 总结:\n",
    "#### 单体变量主要考虑每一个变量与目标变量的关联性, 基于模型的特征选择根据特征对整个模型的权重选择, 递归消除法是逐一筛选"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
